#include <iostream>
#include<string>
#include<set>
#include<map>
#include<vector>
using namespace std;

inline void adjust(string& s,int pos)
{
	for (int i = pos; i < s.size()-2; i++)
	{
		s[i] = s[i + 2];
	}
	s.resize(s.size() - 2);
}


int main()
{
	string s;
	cin >> s;
	int size = s.size();
	for (int i = 0; i < size; i++)
	{
		if (s[i] == s[i + 1])
		{
			 adjust(s,i);
			size -= 2;
			if (i == 0)
			{
				continue;
			}
			i -= 2;
		}
	}
	if (size == 0)
	{
		cout << '0';
	}
	else
	{
		cout << s;
	}
	return 0;
}


//class Solution {
//public:
//    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
//        set<int> s1(nums1.begin(), nums1.end());
//        set<int> s2(nums2.begin(), nums2.end());
//        set<int> s3;
//        for (auto e1 : s1)
//        {
//            for (auto e2 : s2)
//            {
//                if (e1 == e2)
//                {
//                    s3.insert(e2);
//                }
//            }
//        }
//        vector<int> ret(s3.begin(), s3.end());
//        return ret;
//    }
//};
//
//int main()
//{
//    vector<int> v1{ 1,2,3 };
//    vector<int> v2{ 8,2,2,3,8 };
//    Solution s;
//    vector<int> ret = s.intersection(v1, v2);
//    for (auto e : ret)
//    {
//        cout << e << " ";
//    }
//    return 0;
//}
//
//int f1(int i)
//{
//    string flag = to_string(i);
//    int cout = 0;
//    for (auto e : flag)
//    {
//        if (e == '2')
//        {
//            cout++;
//        }
//    }
//    return cout;
//}
//
//int main() {
//    int right = 0;
//    int left = 0;
//    cin >> right >> left;
//    int flag = 0;
//    for (int i = right; i <= left; i++)
//    {
//        flag += f1(i);
//    }
//    cout << flag;
//    return 0;
//}